Preguntas 2do parcial

Tema: Verificación y Validación

Complete los espacios numerados con el término que corresponda para que la frase sea correcta.

"A través de la actividad de (1), localizamos un (2) en el código que fue identificado a través de la ejecución de casos de prueba, que evidenciaron (3) en el software. Para su identificación, se utilizó una técnica del tipo (4), ya que solo se consideró la especificación del módulo a verificar."

Escriba dos escenarios de prueba para la siguiente historia de usuario “Solicitar recolección de residuos grandes” y su criterio de aceptación correspondiente.

“Como residente de Montevideo quiero solicitar el servicio de recolección de residuos grandes para no dejar el residuo en la calle sin avisar y evitar posibles multas y para que no me ocupe lugar en mi casa.”_
Criterio de aceptación: Dado que el usuario completa los datos para solicitar el servicio y no se tiene conexión con el sistema de la Intendencia de Montevideo, o no se tiene internet, o bien no hay disponibilidad en la Intendencia para la fecha seleccionada, cuando selecciona la funcionalidad correspondiente a visualizar disponibilidad, entonces se muestra un mensaje de error indicando el problema.

Sobre las técnicas de verificación de software, seleccione la opción correcta:

  1. El testing exploratorio es una técnica de verificación de caja blanca.
  2. El Test Driven Development es una técnica de verificación de caja negra, ya que consiste en generar los casos de prueba antes de que el código esté implementado.
  3. La generación de casos de prueba a partir de casos de uso es una técnica de caja blanca, ya que se basa en la estructura del caso de uso.
  4. La técnica de valores límites se puede usar al momento de definir los casos de prueba de los escenarios de prueba identificados (sin importar con qué técnica), de forma tal que pruebe los límites de las condiciones que configuran el escenario.

Dadas las siguientes afirmaciones sobre las pruebas de regresión, ¿cuáles afirmaciones son correctas?:

  1. Pueden ser tanto de caja blanca como de caja negra
  2. Se realizan únicamente a nivel de componentes y es deseable que estén automatizadas
  3. Su objetivo no se enfoca en las funcionalidades o artefactos nuevos del software
  4. Su objetivo es probar versiones anteriores del software
  5. Se pueden realizar manualmente

Sobre drivers y stubs, seleccione la respuesta correcta:

  1. Son piezas de software que contienen validaciones y errores respectivamente.
  2. Representan el éxito y el fracaso en un caso de prueba respectivamente.
  3. Viabilizan ciertas pruebas de piezas de software.
  4. Son niveles de pruebas.

Sobre las pruebas de integración, seleccione la respuesta correcta:

  1. Una ventaja si aplico la estrategia bottom up es que no tendré stubs.
  2. Los drivers indican dónde automatizar una prueba.
  3. Al ser del primer nivel, detectan errores de forma temprana
  4. Priorizan el core del sistema, lo cual es lo más crítico.

Sobre el proceso en V, seleccione la respuesta correcta:

  1. Sirve para certificar procesos de desarrollo.
  2. Viabiliza Test Driven Development.
  3. Las metodologías ágiles son una mejor opción porque las actividades de testing no quedan para el final.
  4. Incorpora actividades de Verificación y Validación desde el inicio del proceso de desarrollo.

Sobre las pruebas de regresión, seleccione la respuesta correcta:

  1. Son pruebas automatizadas.
  2. Es el nombre que se le asigna a las pruebas repetitivas.
  3. Son pruebas que se ejecutan cuando el software cambia.
  4. Son pruebas especificas para Machine Learning.

Seleccione la opción incorrecta al completar la frase: “Un equipo especializado en pruebas...

  1. ... si se basa en las especificaciones, tiende a cometer los mismos errores que el programador.”
  2. ... en general, manejan mejor las técnicas de pruebas del sistema que el equipo de desarrollo.”
  3. ... conoce los errores más comunes en los que incurre el equipo de desarrollo.”
  4. ... conoce el negocio.”

Complete la frase, “El testing de sistema...

  1. ... es en donde se intenta comprobar que cada componente cumple con los requisitos especificados.”
  2. ... es en donde se intenta comprobar que el sistema cumple con los requisitos especificados.”
  3. ... es sobre un entorno de pruebas lo más parecido posible al ambiente de desarrollo.”
  4. ... es exploratorio, evitando recurrir a la documentación.”

Tema: Liberación y Evolución

Problema práctico: transferencia de desarrollo a mantenimiento

La empresa ACME Ltda se dedica al desarrollo de software y cuenta con varios equipos de desarrollo (quienes ejecutan proyectos para sus clientes) y un equipo de mantenimiento de software (quien realiza la evolución y corrección de errores de los productos que se generaron en los proyectos una vez estos son liberados a producción).

Últimamente ACME ha detectado que, por más que siempre logra entregar proyectos exitosamente a sus clientes, al poco tiempo de transferirlo a su equipo de mantenimiento, los tiempos de respuesta ante incidentes y solicitudes son excesivamente altos.

ACME lo contrata a Ud. como consultor para diagnosticar la situación. Al entrevistarse con el equipo de mantenimiento, Ud. identifica que su principal reclamo es que no suelen recibir la transferencia adecuada por parte de los equipos de desarrollo.

Mencionar 3 aspectos que entienda relevantes comprobar de la transferencia (artefactos o evidencia de actividades realizadas) para aceptar o descartar este comentario.

El proceso de evolución de software puede incluir las siguientes etapas o actividades:
  1. Análisis de impacto: se evalúa costo e impacto del cambio como insumo para tomar la decisión de su implementación
  2. Planificación de la versión: implica diseñar y ejecutar los casos de prueba para asegurar que el cambio fue implementado correctamente
  3. Implementación del cambio: se ejecuta para cambios no urgentes, ya que los urgentes no siguen un proceso de evolución de software
  4. Validación de largo plazo: para asegurar que el cambio realmente es necesario, se realiza un análisis de coyuntura y prospección que garantice que la solución propuesta será válida por, al menos, 6 meses.
Entre los tipos de mantenimiento puede mencionarse:
  1. Correctivo, adaptativo, retroactivo
  2. Perfectivo, adaptativo, correctivo
  3. Retroactivo, correctivo, adaptativo, asertivo
  4. Asertivo, correctivo, adaptativo
La refactorización es el proceso de hacer mejoras a un programa para reducir la degradación del sistema al realizar cambios:
  1. Esta afirmación es falsa, ya que no considera que todo sistema siempre se degrada.
  2. Esta afirmación es verdadera. Entre otras actividades puede considerar mejorar su estructura o reducir su complejidad.
  3. Esta afirmación es verdadera. A su vez, para optimizar costos, se recomienda que los procesos de refactorización sean acompañados por tareas de mantenimiento evolutivo.
  4. Esta afirmación es falsa, ya que no menciona que la refactorización solo se realiza en contextos de metodologías ágiles.
La liberación del sistema comprende actividades … (complete la frase con la opción correcta)
  1. … necesarias para comenzar el uso del software luego de construido y probado.
  2. … como la verificación, instalación, configuración y entrenamiento de usuarios
  3. … como el entrenamiento y apoyo en el uso (siempre y cuando el proyecto no se ejecute bajo metodologías ágiles)
  4. … como la adopción del software. Una estrategia de adopción de Big-bang reduce los riesgos más relevantes y permite un "time to market" más eficiente.
Sobre el modelo en espiral de evolución del software, seleccione la respuesta correcta:
  1. Este modelo es aplicable en cualquier escenario de evolución del software.
  2. Este modelo de evolución del software es aplicable cuando la misma empresa es responsable del software a lo largo de su vida.
  3. Este modelo es aplicable cuando la empresa responsable de la evolución del software es otra diferente de la que lo desarrolló.
  4. Este modelo es aplicable cuando se pasa de una metodología tradicional en el desarrollo a una metodología ágil en la evolución.
Sobre las estrategias de adopción de software se pueden mencionar:
  1. Big-bang y estrategias ágiles.
  2. Estrategia por capas y estrategias híbridas
  3. Procesamiento en paralelo y estrategias híbridas.
  4. Estrategias híbridas, estrategias ágiles y estrategia paulatina.
Seleccione la afirmación incorrecta:
  1. Entre los “bad smells” en el código pueden mencionarse el código duplicado y los enunciados switch.
  2. Se recomienda rediseñar los métodos demasiado largos para obtener métodos más cortos.
  3. La generalidad especulativa es considerada como un “bad smell” en el código.
  4. Para que el programa sea más legible se recomienda que el mismo grupo de ítems aparezca en varios lugares del código.
Respecto al proceso de evolución del software:
  1. Las etapas del proceso de evolución de software generalmente varían dependiendo de si el cambio a implementar es urgente o no.
  2. (1) y en el caso de un cambio urgente lo más común es que el proceso no pase por todas las etapas de ingeniería de software.
  3. Las etapas del proceso de evolución prácticamente no varían dependiendo de si el cambio a implementar es urgente o no.
  4. (3) y la única diferencia es que cuando los cambios son urgentes las etapas de ingeniería de software se cumplen siguiendo un enfoque ágil sin importar el enfoque (tradicional o ágil) aplicado durante el desarrollo.

Tema: Gestión de proyectos

Problema: valor ganado

Dada la siguiente gráfica de valor ganado y costo actual y un en la semana 5.

Pasted image 20230703212115.png

¿Cuál es la situación del proyecto en la semana 3 y en la semana 5 respecto al costo y a la planificación? Justifique.

Dado el siguiente avance de las historias de usuario durante el sprint:

Pasted image 20230703212819.png

¿Cuáles afirmaciones son correctas?

  1. Al finalizar el día 1 el equipo tiene más de 4 puntos
  2. No es posible que a partir del día 5 el equipo disminuya la cantidad de puntos.
  3. La cantidad de puntos comprometidos para el sprint es de 37.
  4. El sprint burn down chart no muestra el avance real, ya que se modifica cuando se termina una historia.
La empresa donde trabaja fue contratada para desarrollar una aplicación móvil para facilitar e incentivar el acceso a información de relevancia e interés a adultos mayores. Por esta razón es fundamental que la aplicación cuente con altos grados de accesibilidad y usabilidad.

¿Cuáles afirmaciones son correctas?

  1. Un riesgo negativo del proyecto es que la aplicación no cumpla con los estándares de accesibilidad y usabilidad para el público objetivo de la aplicación móvil.
  2. Una estrategia a utilizar para gestionar el riesgo es mitigar. Por ejemplo, realizando validaciones de prototipos desechables a adultos mayores desde el inicio del proyecto.
  3. Una estrategia posible a utilizar para gestionar el riesgo es evitar. Por ejemplo, utilizando desde el comienzo del proyecto pautas de experiencia de usuario enfocadas en adultos mayores.
  4. Una estrategia posible a utilizar para gestionar el riesgo es aceptar, dado que no existe la posibilidad de reducir la probabilidad ni el impacto del riesgo.
  5. Que la aplicación no cumpla con altos grados de accesibilidad y usabilidad no es un riesgo del proyecto.
Dado el siguiente grafo de precedencia:

Pasted image 20230703230516.png

¿Cuáles afirmaciones son correctas?

  1. La holgura de las actividades B, D y F es 0.
  2. Existe solo un camino crítico
  3. La duración del camino crítico es de 20.
  4. Si la actividad D requiere 4 días en vez de 2 no atrasa al proyecto.
  5. La duración del proyecto puede acortarse utilizando la técnica de crashing, por ejemplo sobre la actividad A.
En relación a las etapas de formación de un equipo (Tuckman & Jensen, 1977) vistas en el curso. Seleccione la opción correcta:
  1. Un equipo debe pasar por las 5 etapas.
  2. Si un equipo está en la etapa de Desempeño, no vuelve a la etapa de Turbulencia.
  3. Si un equipo está en la etapa de Desempeño, no vuelve a la etapa de Normalización.
  4. Ninguna de las anteriores es correcta.
Acerca de un correcto WBS puede decirse que:
  1. Debe identificar todos los entregables de un proyecto e incluir todo el trabajo necesario para alcanzar esos entregables.
  2. La descomposición no abarca el 100% del alcance del proyecto.
  3. Debe indicar claramente la dependencia entre los elementos de un mismo nivel para poder completar el nivel superior.
  4. Se completa cuando el nivel inferior tiene cada nodo un solo hijo.
Si se cuenta con la siguiente estimación de las tareas de un proyecto y sus respectivas dependencias, ¿cuál es la duración del camino crítico?

Pasted image 20230704222740.png

  1. 31
  2. 37
  3. 53
  4. 31 y 37, ya que existen dos caminos críticos.
El equipo de desarrollo utilizó la técnica de planning poker para estimar las historias de usuario. Seleccione la opción correcta:
  1. Se realiza una reunión, en la que cada integrante, por turnos, va mostrando su tarjeta y explicando el porqué de su estimación.
  2. Uno de los objetivos del product owner en el proceso de estimación es aclarar dudas que surjan de las historias de usuario.
  3. El product owner puede aceptar o rechazar la estimación dada por el equipo de desarrollo, ya que es la persona que más conoce del producto a construir y el esfuerzo necesario.
  4. Cuando no se llega a un acuerdo respecto a la estimación de una historia de usuario entre los integrantes de un equipo en la primera ronda de estimación, se realiza un promedio entre las estimaciones realizadas para dicha historia de usuario.
Con respecto a la gestión de riesgos en los proyectos de software, ¿cuáles afirmaciones son correctas?
  1. El proceso de gestión de riesgos es un proceso iterativo que se realiza únicamente en las etapas iniciales del proyecto.
  2. La gestión de los riesgos tiene como objetivo aumentar la probabilidad y el impacto de los eventos positivos y disminuir los de los adversos.
  3. Se puede realizar tanto un análisis cuantitativo como uno cualitativo de los riesgos.
  4. Aceptar una amenaza implica identificar el riesgo y decidir no tomar medidas a menos que el riesgo se materialice.
  5. Si se agregan actividades al proyecto para reducir los riesgos, estas actividades deberían ser consideradas en el WBS.
Un equipo está trabajando en un proyecto de 25 semanas de duración y un costo previsto de USD 30.000. Está aplicando la técnica del valor ganado. En la semana 12, calculan el SPI y el valor obtenido es 1,2. Seleccione la opción correcta:
  1. El proyecto está yendo más rápido que lo planificado.
  2. (1) y, de seguir con la misma tendencia, el proyecto terminaría antes de la semana 20.
  3. El proyecto está costando menos de lo planificado.
  4. (3) y, de seguir con la misma tendencia, el proyecto va a costar menos de USD 27.000.
Dado un sprint de 10 días en el que se planifican completar 11 historias de usuario, y el siguiente % de avance:

Pasted image 20230704230329.png

Los puntos pendientes aún por concretar (para dibujar la gráfica de burn-down) al finalizar el día 4 son:

  1. 23
  2. 19,5
  3. 40
  4. 20,5
Respecto al cronograma:
  1. La duración del proyecto siempre puede acortarse con las técnicas de fast tracking o crashing, sin incrementar los costos.
  2. La nivelación de recursos consiste en nivelar todos los caminos a la extensión del camino crítico.
  3. Solo se puede nivelar recursos moviendo actividades sin alterar la duración del camino crítico.
  4. Puede no ser posible acortar la duración del proyecto mediante la técnica de fast tracking si hay dependencias «duras» que, debido a su naturaleza, no se pueden violar.
Respecto a la gestión de conflictos:
  1. La técnica “Suavizar/Reconciliar” hace hincapié en los puntos de acuerdo más que en las diferencias,
  2. (1) pero no resuelve el problema.
  3. La técnica “Suavizar/Reconciliar” incorpora múltiples puntos de vista y visiones a partir de perspectivas diversas; conduce al consenso y al compromiso,
  4. (3) por lo que resuelve el problema.
Respecto a la predicción de cambios en el software, ¿cuáles afirmaciones son correctas?
  1. Resulta muy difícil determinar si una aplicación que está en uso va a requerir cambios en el futuro.
  2. Si un sistema es mantenible, es muy probable que sin importar cuántos y qué cambios se realicen, éste no va a resultar degradado.
  3. La cantidad y complejidad de las interfaces del sistema influye en su mantenibilidad y por lo tanto es un aspecto a tener en cuenta en la predicción de cambios en el sistema.
  4. La refactorización del código de un sistema se utiliza para mejorar el código y solamente se aplica cuando se decide realizar una reingeniería del sistema.
  5. En general, la reingeniería de un sistema reduce riesgos (como por ejemplo: atraso en el cronograma y errores en la especificación de requisitos) en comparación con desarrollar el sistema desde cero. Cuando no existe documentación actualizada del sistema original, la ingeniería inversa es un mecanismo útil para generarla.

Tema: Gestión de la Configuración

Una de las actividades del la Gestión de la configuración es la gestión del cambio. Indique las características principales de un proceso de gestión de cambios exitoso.
  1. El proceso debe ser genérico para todo tipo de cambios y es requisito incluir un comité de control de cambios.
  2. Para cada cambio se debe analizar el costo y los beneficios, e identificar los componentes que serán modificados. En particular, los cambios urgentes requieren un proceso muy ágil.
  3. En cualquier tipo de proyecto el cliente siempre debe ser parte del comité de control de cambios.
  4. Cuando un sistema fue liberado y está en funcionamiento, todas las definiciones acerca de qué cambios realizar y cuándo hacerlos es responsabilidad del equipo de mantenimiento.
Complete la siguiente frase con la opción correcta.

En un proyecto crítico para una organización se pone mucho énfasis en mantener una adecuada gestión de la configuración, en particular…

  1. en lo que refiere a la integración continua, dado que este proceso toma muy poco tiempo en sistemas grandes, de forma que los errores introducidos se identifiquen rápidamente.
  2. en lo que refiere a las pruebas de aceptación y de usabilidad, mediante instancias con un grupo de usuarios previamente elegido.
  3. en lo que refiere al proceso de armado del sistema (build), para que los cambios a las versiones por distintos desarrolladores no interfieran entre sí.
  4. en lo que refiere al control de versiones, realizando el seguimiento de las diferentes versiones de los componentes del sistema y, entre otros, teniendo un registro del histórico de cambios.
En un sistema de control de versiones centralizado
  1. los usuarios deben copiar en su espacio de trabajo cada uno de los componentes que quieren modificar.
  2. no se permite que dos usuarios copien el mismo componente y trabajen cada uno en una versión distinta de aquel.
  3. el sistema crea siempre en el espacio de trabajo de cada usuario una copia del repositorio master del proyecto.
  4. si dos usuarios descargan y trabajan sobre el mismo componente, cuando cada uno termina y sube el componente modificado al repositorio, el último en subirse puede sobrescribir la versión del otro.
El proceso de gestión de cambios descripto en la siguiente imagen, es apropiado en el contexto de:

Pasted image 20230704232722.png

  1. una metodología ágil
  2. un cambio durante el desarrollo sobre un artefacto que aún no ha entrado en línea base
  3. un cambio durante el desarrollo sobre un artefacto que ya está en línea base
  4. todos los anteriores
La línea base de un proyecto:
  1. Debe involucrar todos los artefactos generados y aprobados durante el proyecto de desarrollo.
  2. Debe ir evolucionando conforme a los procedimientos de gestión de la configuración definido.
  3. 2), donde cada cambio de versión corresponde a cada cambio aceptado.
    1. y un elemento de configuración se convierte en línea base cuando fue revisado y aprobado por el Jefe de Proyecto